assert
<cassert>
评估断言
如果这个函数形式的宏的参数表达式等于 0(例如 expression 等于 false),那么编译器会调用 abort
函数来终止程序,并将消息写入标准错误设备。
expression
expression 会被评估。如果这个 expression 等于 0,则会导致断言失败,并终止程序。
因此,assert
的设计是用来捕捉程序错误的,而不是用户或者运行时错误,在程序退出调试阶段后,通常都会使用 NDEBUG
来关闭这个宏。
无
/* assert example */
#include <assert.h> /* assert */
{
assert(myInt != NULL);
printf("%d\n", *myInt);
}
int main()
{
int a = 0;
int * c = NULL;
b = &a;
print_number(b);
print_number(c);
return 0;
在这个例子中,如果 print_number
使用一个空指针作为参数被调用,那么assert
会终止程序执行。这种情况发生在第二次调用 时,它触发了一个断言失败,提示了bug的存在。